package com.jrx.anytxn.param.service.rights;

import com.jrx.anytxn.common.exception.TxnBizException;
import com.jrx.anytxn.common.exception.TxnException;
import com.jrx.anytxn.i18n.response.TxnPage;
import com.jrx.anytxn.param.entity.PrActivityInfoReq;
import com.jrx.anytxn.param.entity.PrActivityInfoRes;
import com.jrx.anytxn.param.entity.PrActivityInfo;

import java.util.List;

/**
 * ClassName IPrActivityInfoService
 *
 * @author lujianyou
 * @version 1.0
 * @description 活动信息表
 * @date 2021/7/2 23:33
 **/
public interface IPrActivityInfoService {
    /**
     * 根据机构号获取活动列表
     *
     * @param tenantId
     * @return
     */
    List<PrActivityInfo> listByTenantId(String tenantId);

    /**
     * 根基租户号、活动号 获取活动信息
     *
     * @param tenantId
     * @param activityId
     * @return
     */
    PrActivityInfo getByTenantIdAndActivityId(String tenantId, String activityId);

    /**
     * 校验活动的有效性
     * @param tenantId
     * @param activityId
     */
    PrActivityInfo checkActivity(String tenantId, String activityId) throws TxnBizException;

    /**
     * 校验活动的所有属性的有效性
     * @param tenantId
     * @param activityId
     * @return
     * @throws TxnBizException
     */
    PrActivityInfo checkAllActivityInfo(String tenantId, String activityId,String productCode) throws TxnBizException;

    /**
     * 更新
     * @return
     */
    int updateByPrimaryKeySelective(PrActivityInfo activityInfo);


    /**
     * 添加活动
     * @param prActivityInfoReq
     * @return
     * @throws TxnException
     */
    PrActivityInfoRes addPrActivityInfoRes(PrActivityInfoReq prActivityInfoReq) throws TxnException;

    /**
     * 更新修改活动
     * @param req
     * @return
     */
    PrActivityInfoRes modifyPrActivityInfo(PrActivityInfoReq req) throws TxnBizException;


    /**
     * 根据租户号、活动号获取活动信息
     * @param tenantId
     * @param activityId
     * @return
     * @throws TxnException
     */
    PrActivityInfoRes getByTenIdAndActivityId(String tenantId, String activityId) throws TxnException;

    /**
     * 根据租户ID分页查询
     *
     * @param pageNum  页码
     * @param pageSize 页大小
     * @param req 活动查询req
     * @return TxnPage<RightsAndInterestsRes>
     */
    TxnPage<PrActivityInfoRes> findAllPageByCondition(Integer pageNum, Integer pageSize, PrActivityInfoReq req) throws TxnException;


    /**
     * 根据租户ID和活动ID删除活动
     * @param tenantId
     * @param activityId
     * @return
     * @throws TxnException
     */
    Boolean removeByTenantIdAndRightsId(String tenantId, String activityId) throws TxnException;
}
